﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ubatic.Contracts.Contracts;

namespace Ubatic.Contracts.Services
{
    public interface IConvocatoriaService
    {
        List<ConvocatoriaDto> ObtenerConvocatorias(ConvocatoriaCriteriaDto criteria);

        List<ProyectoDto> ObtenerProyectos(long convocatoriaId);

        long CrearProyectoVacio(long convocatoriaId, long usuarioId);

        ProyectoDto ObtenerProyecto(long proyectoId);

        #region [Dato Principal]

        ProyectoDatoPrincipalDto ObtenerProyectoDatoPrincipal(long proyectoVersionId);

        void GuardarProyectoDatoPrincipal(ProyectoDatoPrincipalDto proyectoDatoPrincipalDto);

        #region [Palabra Clave]
        
        void AgregarPalabraClave(PalabraClaveDto palabraClaveDto);

        List<PalabraClaveDto> ObtenerPalabrasClave(long proyectoVersionId);

        void EliminarPalabraClave(long proyectoVersionId, long palabraClaveId);

        #endregion [Palabra Clave]

        #region [Area De Conocimiento]

        void AgregarAreaConocimiento(AreaConocimientoDto areaDeConocimientoDto);

        List<AreaConocimientoDto> ObtenerAreaConocimientos(long proyectoVersionId);

        void EliminarAreaConocimiento(long proyectoVersionId, long areaConocimientoId);

        #endregion [Area De Conocimiento]

        #region [Asignaturas]

        void AgregarAsignatura(AsignaturaDto areaDeConocimientoDto);

        List<AsignaturaDto> ObtenerAsignaturas(long proyectoVersionId);

        void EliminarAsignatura(long proyectoVersionId, long asignaturaId);

        #endregion [Asignaturas]

        #endregion [Dato Principal]
    }
}
